以下定义和语句 struct s{int i1;struct s *i2 ,i3}

来源:百度知道 编辑:UC知道 时间:2024/09/24 01:47:34
以下定义和语句
struct s{
int i1;
struct s *i2 ,*i0;
};
static struct s a[3]={2,&a[1],'\0',4,&a[2],&a[0],6,'\0',&a[1]},*ptr;
ptr=a;
A ptr→i1++
B *ptr→i2
C ++ptr→i0
D *ptr→i1
答案是A
这个题目看不懂,求什么也不知道,更不用谈做,这题到底求什么?怎么看出来?
希望帮我分析下,每个答案的结果都分析下,我概念相当糊
谢谢
若有以下定义和语句,下列操作正确的是
struct s
{
int i1;
struct s *i2,*i0;
};
static struct s a[3]={2,&a[1],'\0',4,&a[2],&a[0],6,'\0',&a[1]},*ptr;
ptr=a;

A ptr→i1++
B *ptr→i2
C ++ptr→i0
D *ptr→i1

老师,这题题目我看不懂,要求我们做什么不清楚,无从下手,答案是A,麻烦给我详细解答下,每个答案都帮我理下,谢谢(*^_^*)

首先判断优先级与结合性
->优先级高于*与++,*与++优先级相同且右结合性
A 取ptr所指内容(A[0])的i1成员,把结果后自增,结果为整型2,正确
B 取ptr所指i2成员(&A[1]),取其内容即A[1],结果为{4,&a[2],&a[0]},没错,只是是个struct s型的
C 取ptr所指i2成员('\0'),前自增后,其值为sizeof(struct s),并返回这个值
语法上并没有错,只是实际没意义
D 取ptr所指i1成员,是个整型,取内容,错误

所以综上,严格说只有D是错误的
题目让选正确的,自己看着办吧

题目问的哪种引用不正确,答案是D.
因为prt是指针,且ptr=a,ptr->i1就是a[0].i1(=2),所以A是正确的.ptr->i2是指针,可以取其值,也合法.故B也正确.C与B类似.至于D,形式与B相同,应该也正确,但i1不是指针,因之prt->i1也不是指针,不能取内容.D不正确.
至于题目中的++,类似于平时用的i++,并不改变引用的性质.
但题目问的是哪个不正确,所以答案是D.